<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>NCoverExplorer Release Notes</title>
        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
        <style> body { font-size: 10pt; font-family: Verdana; }
			p.title { font-size: 20pt; font-weight: bold; }
			.subtitle { color: maroon; }
			p.question { font-weight: bold; }
			pre { font-size: 10pt; font-family: Courier; }
			pre.usage { background-color: #F0F0F0; }
			.quote { background-color: #F0F0F0; margin-left: 36pt;}
			.method { color: maroon; font-size: 10pt; font-weight: bold; }
			.hdrcell { background-color: #DDEEFF; font-size: 10pt; }
			.datacell { background-color: #FFFFEE; text-align: right; font-size: 10pt; }
			.hldatacell { background-color: #FFCCCC; text-align: right; font-size: 10pt; }
			.box { border: 1px solid; padding: 10px; }
			.treeviewBlack { color: black; }
			.treeviewGrey { color: grey; }
			.treeviewRed { color: red; }
			.treeviewBlue { color: blue; }
			.sourceBlue { background-color: #E0EDFD; color: black; }
			.sourceRed { background-color: #E6B0A5; color: black; }
        </style>
    </head>
    <body>
        <P class="title">NCoverExplorer Release Notes</P>
        <P>The latest version of this document is located <A href="http://www.kiwidude.com/dotnet/NCoverExplorerReleaseNotes.html">here</A>.
        <BR/>For the latest NCoverExplorer news and updates, visit my <A href="http://www.kiwidude.com/blog/">blog</A>.</P>
        <HR/>
        
        <P class="question">v1.3.4 - Apr 8th 2006</P>
        <P class="answer">Bundled with TestDriven.Net from build 2.0.1580.</P>
        <P class="answer">The following bug fixes were made:</P>
			<UL>
				<LI>
					Nested classes without a namespace specified would cause the coverage.xml file to fail to load.
 				</LI>
			</UL>
        <HR/>
        
        <P class="question">v1.3.3 - Apr 4th 2006</P>
        <P class="answer">Bundled with TestDriven.Net from build 2.0.1578.</P>
        <P class="answer">The following new features were introduced:</P>
 			<UL>
				<LI>
					Added NCoverExplorer.Console.exe for utilising NCoverExplorer features with automated
					coverage builds and NAnt tasks. By default will load up all the specified coverage file(s), apply
					any coverage exclusion(s) specified in the NCoverExplorer configuration and display total
					coverage statistics in the console output. If all items processed successfully returns an exit code of 0,
					if an exception occurs returns an exit code of 2.
 				</LI>
				<LI>
					Added /m:xx (or /minCoverage:xx) argument to NCoverExplorer.Console.exe. When used in conjunction with
					/f (or /failMinimum) an exit code of 3 is returned if the min coverage is not reached. Can act
					as a trigger for failing an automated build such as with CruiseControl.Net.
 				</LI>
				<LI>
					Added module & namespace summary xml report generation to NCoverExplorer (both the GUI and Console versions).
					In the GUI, this is available via the "View->Reports" menu. The three reports that are offered currently are:
					<br/>&nbsp;- Module Summary (Coverage totals for the project and per module);
					<br/>&nbsp;- Namespace Summary (Coverage totals for the project and per namespace);
					<br/>&nbsp;- Module Namespace Summary (Coverage totals for the project, per module and per namespace);
 				</LI>
				<LI>
					Reports can be generated in xml or html format. Native html may be useful for directly attaching to e-mails.
					If xml format is chosen a "CoverageReport.xsl" stylesheet is copied from the NCoverExplorer installation
					folder to the report directory and linked to the xml file similar to coverage.xml/coverage.xsl by NCover.
 				</LI>
				<LI>
					Reports can contain an "excluded nodes" footer section. This lists at the topmost level all of the items
					excluded from coverage at the time the report was run.
 				</LI>
				<LI>
					Added "View->Filter" main menu and context menus, offering the ability to filter out nodes. Filtered
					nodes are simply moved under a new "Filtered" tree node and do not alter the coverage statistics 
					(unlike excluded nodes which are effectively removed from the tree). Filters offered are either to
					hide all 100% covered nodes, or hide all unvisited (0%) nodes.
 				</LI>
				<LI>
					Added "Include in Results" context menu option for when clicking on either the "Excluded" bin or one
					of it's immediate child nodes. Offers a way to "undo" an exclusion without reloading the file.
 				</LI>
				<LI>
					Added "View->Summary Statistics" menu option (shortcut F3) to show dialog of totals of files, classes, members,
					NCLOC (non-commented lines of code) and sequence points. Statistics do not include excluded nodes
					(but will include filtered nodes).
 				</LI>
				<LI>
					Created NAnt and MSBuild tasks for execution of NCoverExplorer.Console as an alternative to the &lt;exec&gt; task. 
					These tasks offer a more developer friendly alternative such as &lt;fileset&gt; for coverage files and creating a
					.config file on the fly based on specified parameters such as &lt;exclusions&gt; within the .build/.proj file.
 				</LI>
				<LI>
					Replaced menus with a lightly tweaked variant of Lutz Roeder's excellent CommandBar code to give a more modern
					look and assign icons on the menus.
 				</LI>
				<LI>
					Added a toolbar. If not wanted the toolbar can be hidden using the "View->Show Toolbar" menu option.
 				</LI>
			</UL>
        <P class="answer">The following minor changes were made:</P>
 			<UL>
				<LI>
	 				Options dialog shortcut changed to F2.
 				</LI>
				<LI>
	 				Excluding a node will now select the node after by default rather than the one previous.
 				</LI>
			</UL>
        <P class="answer">The following bug fixes were made:</P>
			<UL>
				<LI>
					Fix bug where delete key shortcut was active on the root coverage file node, causing an exception to be thrown.
 				</LI>
				<LI>
					Path was being truncated from the module name when saved.
 				</LI>
				<LI>
					Fix bug where changing theme without coverage file loaded caused error.
 				</LI>
			</UL>
        <HR/>
        
        <P class="question">v1.3.2 - Mar 14th 2006</P>
        <P class="answer">Bundled with TestDriven.Net from build 2.0.1545.</P>
        <P class="answer">The following new features were introduced:</P>
			<UL>
				<LI>
					Added support for merging multiple coverage files. This can be triggered through a variety of ways:
					<br/>&nbsp;- Selecting multiple	test classes/fixtures/projects in TestDriven.Net;
					<br/>&nbsp;- Passing multiple files in the command line arguments;
					<br/>&nbsp;- Selecting multiple files in the Open dialog;
					<br/>&nbsp;- Using a new "File->Merge..." menu option;
					<br/>&nbsp;- Drag/dropping onto the NCoverExplorer application.
				</LI>
				<LI>
					Added tabs for each source code file you open to explore coverage on. If you click on a partial class
					then tabs will be opened for each of the source code files making up the class.
				</LI>
				<LI>
					Added the ability to exclude assemblies, namespaces or classes from the coverage results by a wildcard capable 
					case-sensitive match on the name. By default NCoverExplorer includes two exclusions:
					<br/>&nbsp;- Exclude all assemblies with the name ending in ".Tests".
					<br/>&nbsp;- Exclude all namespaces with the name containing ".My" (for VB.Net exclusions).
				</LI>
				<LI>
					Added support for the NCover 1.5.4 "excluded" attribute which can be found in the coverage.xml files when
					the appropriate NCover command-line attributes are used. Note that TestDriven.Net still does not as yet 
					support this attribute so you need to use the NCover.Console command line for this feature - for more information see
					<a href=http://ncover.org/SITE/blogs/ncover_blog/archive/2006/01/29/103.aspx>here</a>. NCoverExplorer
					will not include nodes marked as 'excluded' by NCover in it's totals but will still display them in the tree.
				</LI>
				<LI>
					Added an "Excluded" child bin node containing all nodes that have been excluded by the options dialog, by NCover
					attributes or by the "Exclude From Results" context menu option (see next point).
				</LI>
				<LI>
					Replaced the "Remove from Results" context menu feature with "Exclude from Results" (shortcut of the DEL key).
					Achieves a similar result of removing nodes from coverage calculations, however the nodes are "moved" to the 
					Excluded bin rather than being deleted from the tree.
				</LI>
				<LI>
					Added a custom "theme" capability along with further colour and font customisation options for the coverage tree, 
					statistics and source code panes. A number of predefined "themes" are supplied and users can add their own.
					Users can switch between themes either in the Options dialog or via the "View->Themes" menu.
				</LI>
				<LI>
					Added a new "View->Coverage" menu which has sub-options related to "Sequence Point Coverage" and 
					"Function Coverage", assigned shortcut keys ctrl+(1-4):
					<br/>&nbsp;- Choosing one of the "Sequence Point" variants will display the tree nodes with differing naming
					combinations of coverage percentage and # unvisited sequence points.
					<br/>&nbsp;- Choosing "Function Coverage" will alter the coverage tree display so that only methods/classes that were
					invoked are highlighted. Method nodes show the number of visits to that method. Class, namespace and module nodes
					show the maximum visit count by any of their children.
				</LI>
				<LI>
					Added a "View->Sort By" menu option and context menu on the tree, with sub-options for "Name" (default), 
					"Class name/line number", "Coverage %" (ascending/descending), "Uncovered Sequence Points" (ascending/descending)
					and "Visit Counts" (ascending/descending). 
					Assigned shortcut keys of ctrl+shift+(1-8). Note that reloading the coverage file will remove the current sort 
					and default back to by "Name".
				</LI>
				<LI>
					Added "Save" and "Save As" options to the File menu. These give you the option of overwriting/creating a
					new coverage.xml file with the current values loaded in NCoverExplorer. Any coverage exclusions/removed
					nodes will not appear in the saved coverage file. Note that the methods are written in the same order as
					the sort order specified above.
				</LI>
				<LI>
					Added an "Explore Coverage Folder" menu option to the file menu.
				</LI>
				<LI>
					Added an "Expand All" context menu option on the tree (shortcut ctrl+L).
				</LI>
				<LI>
					Enhanced the statistics pane. When a class node is selected you will now see additional columns of
					coverage %, unvisited sequence points and sequence points. When clicking on a method node you will
					now see the filename.
				</LI>
				<LI>
					Implemented "smart expansion" in the tree. If when you expand a node there is only one child node
					then that node will also be expanded and so on. Increases speed of tree navigation particularly
					if using a style of "Nested" namespaces with deep hierarchies.
				</LI>
				<LI>
					Display class file name in tab page header bar when a method node is clicked on. Tooltip shows the path.
				</LI>
			</UL>
        <P class="answer">The following minor changes were made:</P>
			<UL>
				<LI>
					Optimised when reloads of the coverage file so it is now only required if you change a coverage exclusion
					or the tree grouping/nesting styles in the options dialog. Makes for a snappier UI.
				</LI>
				<LI>
					Added a "Close" menu option to remove any loaded coverage file(s) from display.
				</LI>
				<LI>
					Moved all the "Recent Files" into a submenu to tidy up the File menu.
				</LI>
				<LI>
					Pressing Tab/shift-tab while focus is in the TextEditor pane of source code will now
					move focus out of the TextEditor.
				</LI>
				<LI>
					If a source code file contains multiple classes (not nested), then only the highlighting relevant
					to that particular class will be displayed in the editor window as each class tree node is clicked.
				</LI>
				<LI>
					Excluding the My namespace is now done through the Exclusions feature.
				</LI>
				<LI>
					Options dialog can be displayed using the F4 shortcut key.
				</LI>
				<LI>
					Removed last remnants of "non VS.Net standard colors" from the C# ICSharpCode TextEditor template.
				</LI>
				<LI>
					Make the GUI naming consistent to correctly reference "sequence points" rather than "lines" and "unvisited"
					rather than "uncovered".
				</LI>
				<LI>
					Removed "Edit in VS.Net" from the View menu.
				</LI>
				<LI>
					Changed NCoverExplorer main form icon to one that includes 32x32 sizes so Alt-Tab switching looks 
					better than upscaled 16x16 icon.
				</LI>
				<LI>
					User is now prompted to remove a non-existent coverage file from the "Recent" files list rather than 
					automatically being removed.
				</LI>
			</UL>
        <P class="answer">The following bug fixes were made:</P>
			<UL>
				<LI>
					Serializing the configuration settings was not flushing the stream - resulting sometimes in a blank settings file
					preventing people from loading NCoverExplorer. Will now revert to default settings if an error occurs.
				</LI>
				<LI>
					Displaying a source code file that has been modified to have less lines of code than at the time of the coverage run
					will now display a user friendly message box.
				</LI>
				<LI>
					Compensation made for NCover not reporting column information when profiling C++ code. NCoverExplorer will now
					highlight the entire line rather than throwing an error.
				</LI>
				<LI>
					In some circumstances properties were not highlighted consistently due to a bug in the property node expansion.
				</LI>
				<LI>
					Coverage greater than 99.5% will no longer be rounded up to 100% in the display. It is instead shown as ">99.5%".
				</LI>
				<LI>
					Extremely high visit counts will no longer overflow the visit count.
				</LI>
				<LI>
					Statistics pane for a class will now always consistently show the property nodes grouped, rather than only
					after the class node has been expanded in the tree.
				</LI>
				<LI>
					Recent file menu would display incorrectly for files numbered from 10 onwards truncating first character.
				</LI>
				<LI>
					Release notes & FAQ were always directed to website rather than local versions when NCoverExplorer was started 
					from TestDriven.Net.
				</LI>
			</UL>
        <HR/>
        
        <P class="question">v1.3.1 - Feb 15th 2006</P>
        <P class="answer">Bundled with TestDriven.Net from build 2.0.1435.</P>
        <P class="answer">The following new features were introduced:</P>
			<UL>
				<LI>
					Namespaces are now "flattened" by default in the tree. This looks like the ClassView
					browser in VS.Net 2005 (or Lutz Roeder's Reflector). You can retain the nested look by changing it in the View->Options dialog.
				</LI>
				<LI>
					If you use the original "nested" namespace style (like the VS.Net 2003 class browser), then inner namespaces will now be
					listed at the top of each branch with the classes listed underneath which is less confusing to navigate.
				</LI>
				<LI>
					Option to exclude the "My" namespace for VB.Net projects (for use with with BCL 2.0 & NCover 1.5.x).
				</LI>
				<LI>
					Right-click menu option on coverage tree (shortcut ctrl+R) to "Remove From Results" that selected node
					and all it's children. Will force the coverage values to be recalculated. Intended for use where
					you have undesired assemblies, namespaces, classes or methods included in the report that are skewing your 
					coverage results and you want them removed.
				</LI>
				<LI>
					Option to specify a satisfactory coverage threshold as a number of lines instead/as well as a percentage.
					If either of the conditions are met the node is coloured differently (provided the coverage is not zero).
				</LI>
				<LI>
					Colours can now be customised for both the source code highlighting and the nodes in the tree.
				</LI>
				<LI>
					Collapse all nodes context menu option on the coverage tree control (shortcut ctrl-A). Equivalent to reloading
					the coverage file (but would preserve any changes you have made such as removing nodes).
				</LI>
				<LI>
					By default the NCoverExplorer now attempts to restore your currently selected node/caret position after
					reloading a coverage.xml file (either F5 or by execution of another "Test With Coverage" command in TestDriven.Net).
					You can turn off this behaviour in the View->Options dialog.
				</LI>
				<LI>
					Statistics pane is now sortable by method name (default), visit count and line number.
				</LI>
				<LI>
					Statistics pane now summarises all the methods and their visit counts when a class node is clicked. 
					Can be used as a basic form of method invocation counting for a fairly rudimentary level of profiling.
					The colouring used is the same as that of the tree to visually assist in identifying methods invoked.
				</LI>
			</UL>
		</P>
        <P class="answer">The following minor changes were made:</P>
			<UL>
				<LI>
					Restructured the Options dialog to have a tabbed interface.
				</LI>
				<LI>
					Renamed the "Show Visit Pane" menu option to "Show Statistics".
				</LI>
				<LI>
					The statistics pane now includes the method name. Widths of the columns are remembered each time you close NCoverExplorer.
				</LI>
				<LI>
					Statistics pane now has icons and colouring to match those of the associated nodes in the coverage tree.
				</LI>
				<LI>
					Inner nested classes now nested internally in the tree under the parent class, sorted to the top.
				</LI>
				<LI>
					Added FAQ, Release Notes and Blog website to the Help menu.
				</LI>
			</UL>
		</P>
        <P class="answer">The following bug fixes were made:</P>
			<UL>
				<LI>
					Source code files now loading with "Encoding.Default" rather than previous default of UTF-8.
				</LI>
				<LI>
					Coverage highlighting not working correctly on multiple line statements.
				</LI>
				<LI>
					Now handles partial classes and yield statements correctly.
				</LI>
			</UL>
		</P>
        <HR/>
        
        <P class="question">v1.3 - Feb 6th 2006</P>
        <P class="answer">Bundled with TestDriven.Net from build 2.0.1373d.</P>
        <P class="answer">The following new features were introduced:</P>
			<UL>
				<LI>
					Launching from VS.Net using TestDriven.Net will now re-use the NCoverExplorer instance
					opened from a previous "Test with... Coverage" click. Each VS.Net instance has it's own
					instance of NCoverExplorer.
				</LI>
				<LI>
					Added "Edit in VS.Net" functionality (keyboard shortcut ctrl+ E) for classes and methods.
					Will navigate to source code in your IDE at same point where your cursor resides in NCoverExplorer.
					Replaces and enhances previous "Open File" right-click option which has been removed.
				</LI>
				<LI>
					Added "Expand Covered" functionality (keyboard shortcut ctrl + Q) - recurses through the child
					nodes of the current node and expands all those with partial or complete coverage. Useful when
					using in conjunction with TestDriven.Net for isolated unit testing.
				</LI>
				<LI>
					Added "coverage file" node at the top of the tree showing total coverage across all modules/namespaces.
				</LI>
				<LI>
					Group by module option (default) to assist with navigating coverage for large solutions.
				</LI>
				<LI>
					Configuration information for NCoverExplorer now written to Local Settings rather than registry.
				</LI>
				<LI>
					Increase default number of "recent files" to 10, with ability to alter in the Options dialog.
				</LI>
				<LI>
					Reload of the current coverage file now has a shortcut key of F5.
				</LI>
				<LI>
					Display the path to the currently loaded coverage file in the title bar.
				</LI>
			</UL>
		</P>
        <P class="answer">The following minor changes were made:</P>
			<UL>
				<LI>
					Performance enhancements to improve loading times further for large files.
				</LI>
				<LI>
					Static constructors now renamed from "cctor" to ".cctor" so as to be sorted at the top.
				</LI>
				<LI>
					Running NCoverExplorer for first time ever will use a better starting form position.
				</LI>
				<LI>
					Removed configuration option for "nesting properties" - default remains the same of "true".
				</LI>
				<LI>
					Source code refactoring into separate assemblies to facilitate unit testing.
				</LI>
			</UL>
		</P>
        <HR/>
        <P class="question">v1.2 - Feb 1st 2006</P>
        <P class="answer">First public release, bundled with TestDriven.Net from build 2.0.1341d.</P>
        <P class="answer">The following new features were introduced:</P>
			<UL>
				<LI>
					Block style highlighting option for both visited and unvisited code.
				</LI>
				<LI>
					Satisfactory coverage threshold.
				</LI>
				<LI>
					Nesting of properties as nodes are expanded.
				</LI>
				<LI>
					Further speed improvements for initial file parsing.
				</LI>
			</UL>
		</P>
        <HR/>
        <P class="question">v1.1 - Jan 1st 2006</P>
        <P class="answer">Speed improvements.</P>
        <HR/>
        <P class="question">v1.0 - Dec 17th 2005</P>
        <P class="answer">First version created.</P>
    </body>
</html>
